package com.example.basic.web.mapper.pharmIn;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.basic.base.BaseEntityMapper;
import com.example.basic.web.model.pharmIn.PharmInRecord;
import com.example.basic.web.response.InPharmResponse;
import com.example.basic.web.response.report.InOutRecordResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Map;

/**
 * <p>
 * 系统操作日志表 Mapper 接口
 * </p>
 *
 */
@Mapper
public interface PharmInRecordMapper extends BaseEntityMapper<PharmInRecord> {

    /**
     * 入库单列表
     *
     * @param queryPage   分页
     * @param searchParam 遗体名称，拼音码，五笔码
     * @param sex         性别
     * @param pharmCode   库房编码
     * @param zoneCode    分区编码
     * @param depotCode   库位编码
     * @param status      状态
     * @param beginTime 开始日期
     * @param endTime 结束日期
     * @return
     */
    IPage<InPharmResponse> queryList(Page<InPharmResponse> queryPage, @Param("searchParam") String searchParam, @Param("sex") String sex,
                                     @Param("pharmCode") String pharmCode, @Param("zoneCode") String zoneCode, @Param("depotCode") String depotCode,
                                     @Param("status") String status,  @Param("beginTime") String beginTime,  @Param("endTime") String endTime);

    /**
     * 出入库记录查询
     * @param queryPage 分页
     * @param searchParam 模糊搜索(遗体名称，拼音码，五笔码)
     * @param pharmCode 库房编码 0-全部
     * @param zoneCode 分区编码 0-全部
     * @param depotCode 库位编码 0-全部
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @param type 出入库类型 0-全部
     * @return
     */
    IPage<InOutRecordResponse> queryInOutRecord(Page<InOutRecordResponse> queryPage, @Param("searchParam") String searchParam,
                                                @Param("pharmCode") String pharmCode, @Param("zoneCode") String zoneCode,
                                                @Param("depotCode") String depotCode, @Param("beginTime") String beginTime,
                                                @Param("endTime") String endTime, @Param("type") String type);

    /**
     * 出入库记录统计
     *
     * @param searchParam 仓库编码
     * @param pharmCode   仓库编码
     * @param zoneCode    分区编码
     * @param depotCode 库位编码
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @param type 类型
     * @return
     */
    Map InOutRecordCount(@Param("searchParam") String searchParam, @Param("pharmCode") String pharmCode,
                         @Param("zoneCode") String zoneCode, @Param("depotCode") String depotCode,
                         @Param("beginTime") String beginTime, @Param("endTime") String endTime,
                         @Param("type") String type);
}